The construction of software applications is time intensive and resource heavy. Companies often hire software developers to create and maintain software applications for use within their environment. For example, a manager in a medical facility may wish to utilize an application that automates the scheduling of medical procedures in order to save time and money. However, the manager may find that no suitable commercial application exists. In order to procure a suitable application, the manager and the medical facility may be forced to develop their own, custom application by hiring software developers to create the application.
Software, such as an application that automates the scheduling of medical procedures, may exist as part of a larger design definition that incorporates the actions of patients, doctors, and medical staff. The actions of these non-application software entities may constitute an important aspect of the design definition that can affect the design of the application software. Yet these actions often excluded from application software requirements.
A typical software development process will likely include, at a minimum, a specification capture phase where software requirements are gathered, a development phase where the software is written, and a test phase where the software is tested. The process is time consuming and costly especially, as is often the case, where a company has a need for multiple custom applications or requires modifications to a custom application. The natural result of the process will likely be a custom software application tailored to a specific need, but not one that is flexible or re-usable; the company will have to invest additional time and resources to make any changes to the custom application or to create a new application.
A system and method that can automate at least part of the design definition and/or application specification process may speed the development cycle and require fewer resources to produce more flexible, re-usable results.